const db=require('../mysql/index')  //导入数据库配置模块
const plug=require('../plug/index')


//获取角色信息列表
exports.getroles=(req, res)=>{
    // const page=parseInt(req.query.page)
    // const pagesize=parseInt(req.query.pagesize)
    const sql='select rolesId,name,status,describtion from roles order by rolesId asc '
    db.query(sql,(err,result)=>{
//先查page页，pagesize条的数据
        if (err) return res.sendError(err.message)
        if (result.length ===0) return  res.sendError('角色信息获取失败')
//再查全部的数据
        db.query('select * from roles',(err, result1)=>{
            if (err) return res.sendError(err.message)
            if (result1.length ===0) return  res.sendError('查询数据长度失败')
            const row=result
            const total=result1.length
            res.send({status:0,message:'获取角色信息列表成功',data:{row,total}})

        })



    })



}


//添加角色
exports.addroles=(req,res)=>{
   const info=req.body
    info.rolesId=plug.Math_random()
    info.permIds=''

    db.query('insert into roles set ?',info,(err,result)=>{
        if (err) return res.sendError(err.message)
        if (result.affectedRows !==1) return  res.sendError('添加角色失败')
        res.send({status:0,message:'添加角色成功'})



    })



}

//根据id删除角色

exports.removeroles=(req,res)=>{

   const id=req.params.id
    const sql='delete from roles where rolesId=?'
    db.query(sql,id, (err,result)=>{
        if (err) return res.sendError(err.message)
        if (result.affectedRows !==1) return res.sendError('删除角色失败')
        
        res.send({status:0,message:'操作成功'})

    })



}


//根据id获取角色详情
exports.getDetaileRoles=(req,res)=>{

    const id= req.params.id
    const sql='select * from roles where rolesId=?'  //看是否有这个id 的角色
    const sql1='select right_id from roles_rights where role_id=?'  //找到这个角色下所有权限点
    db.query(sql,id, (err,result)=>{
        if (err)  return res.sendError(err.message)
        if (result.length ===0) return  res.sendError('找不到该角色详情')
        db.query(sql1,id, (err,result1)=>{
            if (err)  return res.sendError(err.message)
            //处理数据库返出来的权限点
            const arr=[]
            result1.forEach(item =>{
             arr.push(item.right_id)
            })
            //把权限点赋值给角色中的permIds
            result[0].permIds=arr

            res.send({status:0,message:'获取角色详情成功',data:result[0]})

        })


    })



}



//根据id更新角色信息（只更新名字跟描述，但是传过来的请求体必须有数据那几个字段）
exports.updateRoles=(req,res)=>{

    const id=parseInt(req.params.id)
    const info=req.body
    info.permIds=''


    const sql='update roles set ? where rolesId=? '
    db.query(sql,[info,id],(err,result)=>{
        if (err) return res.sendError(err.message)
        if (result.affectedRows !==1) return  res.sendError('更新角色信息失败')
            res.send({status:0,message:'更新角色信息成功'})
    })


}


//给角色分配权限

exports.assignPrem=(req,res)=>{

    const id=req.body.id
    const permIds=req.body.permIds
    // const arr=permIds.split(',')
     console.log(permIds)
    //  console.log(arr)

//先删除已存在的权限点
   const sql1='delete from roles_rights where role_id=?'
    db.query(sql1,id,(err,result)=>{
        if (err) return res.sendError(err.message)

        //插入新的权限点
        const  sql2='insert into roles_rights (id,role_id, right_id) values (?,? , ?)'
        for (let item in permIds){
            const id1=plug.Math_random()
            db.query(sql2,[id1,id, permIds[item]],(err,result1)=>{
                if (err) return res.sendError(err.message)
                if (result1.affectedRows !==1) return  res.sendError('添加权限点失败')
        })
        }

    res.send({status:0,message:'成功'})

        // res.json({status:0,message:'成功'})



    })


}


//根据用户的id获取这个用户的角色
exports.getrolesByUserId=(req,res)=>{
    
    const id=req.params.id
    
    const sql='select * from users_roles where users_id=?'
    db.query(sql,id,(err,result)=>{
        if(err) return res.sendError(err)
        if(result.length !==-1) 
        res.send({status:0,data:result})
        
        
        
        
    })
    
    
    
}

//根据用户id设置角色

exports.setUserRoles=(req,res)=>{
    
    const userId=req.body.userId
    const roles=req.body.roleIds
          
             
    const sql2='insert into users_roles (id,users_id,roles_id) values (?,?,?)'
    const sql3='delete from users_roles where users_id=?'

         db.query(sql3,userId,(err,result3)=>{
            if(err) return res.sendError(err)
            if(result3.affectedRows === -1) res.sendError('清空数据失败')


            roles.forEach(item=>{
                const id=plug.Math_random(9)
          

                db.query(sql2,[id,userId,item],(err,result4)=>{

                    if(err) return res.sendError(err)
                   
                    if(result4.affectedRows !==1) return res.sendError('添加角色失败')
                    return


                })

            })
            
             res.send({status:0,message:'添加角色成功'})



        })
        
    



   
    
    
}





